package com.unionpay.upyzt.example;

import com.unionpay.upyzt.exception.UpyztException;
import com.unionpay.upyzt.model.ElectronicReceipt;
import com.unionpay.upyzt.resp.ElectronicReceiptResp;
import com.unionpay.upyzt.resp.SettleAcctDeleteResp;
import com.unionpay.upyzt.resp.SettleAcctListResp;

import java.util.HashMap;
import java.util.Map;

public class ElectronicReceiptExample {

    /**
     * 运行 Demos
     *
     * @param tradeId           交易的系统订单号
     * @param tradeOutRequestNo 交易的平台订单号
     * @param tradeType         交易类型，目前支持 payment - 消费（转账）| rel_acct_deposit - 转账入金 | allocation - 分账子订单 | guarantee_confirm - 担保确认 | withdrawal_succeeded - 提现
     */
    public static void runDemos(String tradeId, String tradeOutRequestNo, String tradeType) throws UpyztException {
        ElectronicReceiptExample electronicReceiptExample = new ElectronicReceiptExample();

        // 电子回单查询（交易的系统订单号）
//        ElectronicReceiptResp electronicReceiptResp = electronicReceiptExample.retrieveByTradeId(tradeId);

        // 电子回单查询（交易的系统订单号）
        ElectronicReceiptResp electronicReceiptResp1 = electronicReceiptExample.retrieveByOutOrderNo(tradeOutRequestNo, tradeType);

        // 电子回单查询（系统订单号）
        ElectronicReceiptResp electronicReceiptResp2 = electronicReceiptExample.retrieveById(electronicReceiptResp1.getElectronicReceiptId());
    }

    /**
     * 电子回单查询（交易的系统订单号）
     *
     * @param tradeId 交易 Id
     * @return 返回参数
     * @throws UpyztException 异常
     */
    public ElectronicReceiptResp retrieveByTradeId(String tradeId) throws UpyztException {
        System.out.println("------- 电子回单查询（交易的系统订单号） -------");
        ElectronicReceiptResp resp = ElectronicReceipt.retrieveByTradeId(tradeId);
        System.out.println(resp);
        return resp;
    }

    /**
     * 电子回单查询（平台订单号和交易类型）
     *
     * @param outOrderNo 交易的平台订单号
     * @param tradeType  交易类型，目前支持 payment - 消费（转账）| rel_acct_deposit - 转账入金 | allocation - 分账子订单 | guarantee_confirm - 担保确认 | withdrawal_succeeded - 提现
     * @return 返回参数
     * @throws UpyztException 异常
     */
    public ElectronicReceiptResp retrieveByOutOrderNo(String outOrderNo, String tradeType) throws UpyztException {
        System.out.println("------- 电子回单查询（平台订单号和交易类型） -------");
        Map<String, Object> params = new HashMap<>();
        params.put("trade_type", tradeType);
        ElectronicReceiptResp resp = ElectronicReceipt.retrieveByTradeOutOrderNo(outOrderNo, params);
        System.out.println(resp);
        return resp;
    }

    /**
     * 电子回单查询（系统订单号）
     *
     * @param id 系统订单号
     * @return 返回参数
     * @throws UpyztException 异常
     */
    public ElectronicReceiptResp retrieveById(String id) throws UpyztException {
        System.out.println("------- 电子回单查询（系统订单号） -------");
        ElectronicReceiptResp resp = ElectronicReceipt.retrieveById(id);
        System.out.println(resp);
        return resp;
    }


}
